#ifndef SEMAFORO_H_
#define SEMAFORO_H_

#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/types.h>

class Semaforo {

private:
	int id;

	int inicializar (int valorInicial);

public:

	/**
	 * archivo: path de un archivo existente
	 * letra: un caracter cualquiera
	 *
	 * Deben ser iguales para todos los procesos que quieran compartir la misma memoria
	 *
	 * valorInicial: valor para inicializar el contador del semaforo
	 */
	Semaforo ( const char* archivo, char letra, int valorInicial );

	Semaforo ( const char* archivo, char letra);

	virtual ~Semaforo();

	/* operacion p: decrementa el semaforo */
	int wait ();

	/* operacion signal: incrementa el semaforo */
	int signal ();

	/* eliminar el semaforo */
	void eliminar ();
};

#endif /* SEMAFORO_H_ */
